#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
from tkinter import Tk, Button, Entry, Label, Text, END


class YouDaoFanyi(object):
    def __init__(self):
        pass

    def crawl(self, word):
        url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        data = {'i': word,
                'from': 'AUTO',
                'to': 'AUTO',
                'smartresult': 'dict',
                'client': 'fanyideskweb',
                'doctype': 'json',
                'version': '2.1',
                'keyfrom': 'fanyi.web',
                'action': 'FY_BY_REALTIME',
                'typoResult': 'false'}
        r = requests.post(url, data)
        answer = r.json()
        result = answer['translateResult'][0][0]['tgt']
        return result


class Application(object):
    def __init__(self):
        self.window = Tk()
        self.fanyi = YouDaoFanyi()
        # 窗体名字
        self.window.title(u'My Translation')
        # 可以自己调整窗口大小
        self.window.geometry('300x400+500+300')
        self.window.minsize(300, 400)
        self.window.maxsize(300, 400)
        # 创建一个文本框
        self.entry = Entry(self.window)
        self.entry.place(x=10, y=10, width=200, height=25)
        self.entry.bind("<Key-Return>", self.submit1)
        self.result_text1 = Text(self.window, background='azure')
        # 喜欢什么背景色就在这里面找哦，但是有色差，得多试试：http://www.science.smith.edu/dftwiki/index.php/Color_Charts_for_TKinter
        self.result_text1.place(x=10, y=5, width=285, height=155)
        self.result_text1.bind("<Key-Return>", self.submit1)
        # 创建一个按钮
        # 为按钮添加事件
        self.submit_btn = Button(self.window, text=u'翻译', command=self.submit)
        self.submit_btn.place(x=205, y=165, width=35, height=25)
        self.submit_btn2 = Button(self.window, text=u'清空', command=self.clean)
        self.submit_btn2.place(x=250, y=165, width=35, height=25)
        # 翻译结果标题
        self.title_label = Label(self.window, text=u'翻译结果:')
        self.title_label.place(x=10, y=165)
        # 翻译结果
        self.result_text = Text(self.window, background='light cyan')
        self.result_text.place(x=10, y=190, width=285, height=165)

        # 回车翻译

    def submit1(self, event):
        # 从输入框获取用户输入的值
        content = self.result_text1.get(0.0, END).strip().replace("\n", " ")
        # 把这个值传送给服务器进行翻译
        result = self.fanyi.crawl(content)
        # 将结果显示在窗口中的文本框中
        self.result_text.delete(0.0, END)
        self.result_text.insert(END, result)

    def submit(self):
        # 从输入框获取用户输入的值
        content = self.result_text1.get(0.0, END).strip().replace("\n", " ")
        # 把这个值传送给服务器进行翻译
        result = self.fanyi.crawl(content)
        # 将结果显示在窗口中的文本框中
        self.result_text.delete(0.0, END)
        self.result_text.insert(END, result)
        print(content)

    # 清空文本域中的内容
    def clean(self):
        self.result_text1.delete(0.0, END)
        self.result_text.delete(0.0, END)

    def run(self):
        self.window.mainloop()


if __name__ == "__main__":
    app = Application()
    app.run()
